#include "./../inc/main.h"

/* 匹配页面类 */

void MatchPage::display(Lcd *lcd)
{
    int *buffer = lcd->getBuffer();
    // 填充背景色
    memset(buffer, 0xFFFFF0, LCD_WIDTH * LCD_HEIGHT * sizeof(int));

    // 显示匹配提示文字
    ShowFont::instance()->display(
        "正在搜索对手...",
        28,       // 字体大小
        400, 50,  // 文字区域大小
        0xFFFFF0, // 背景色
        0x000000, // 文字色
        200, 180  // 显示位置
    );

    // 绘制取消按钮
    BMP::drawRoundRectangle(
        buffer,
        cancel_x, cancel_y,
        cancel_x + cancel_w, cancel_y + cancel_h,
        0x8B4513, // 按钮背景色
        10,       // 圆角半径
        0x000000, // 边框色
        2         // 边框宽度
    );
    ShowFont::instance()->display(
        "取消匹配",
        24,
        cancel_w, cancel_h,
        0x8B4513,
        0xFFFFFF,
        cancel_x + 20, cancel_y + 10);

    lcd->swapBuffers();
}

bool MatchPage::handle_cancel(Touch *touch)
{
    Point p;
    touch->wait(p);
    int x = p.x();
    int y = p.y();
    // 判断触摸点是否在取消按钮区域内
    return (x >= cancel_x && x <= cancel_x + cancel_w &&
            y >= cancel_y && y <= cancel_y + cancel_h);
}

// 非阻塞式检查取消按钮点击
bool MatchPage::check_cancel_click(Touch *touch)
{
    Point p;
    if (touch->checkTouch(p))
    {
        int x = p.x();
        int y = p.y();
        bool is_clicked = (x >= cancel_x && x <= cancel_x + cancel_w &&
                           y >= cancel_y && y <= cancel_y + cancel_h);
        if (is_clicked)
        {
            // 重置触摸状态，避免重复触发
            touch->reset();
        }
        return is_clicked;
    }
    return false;
}

// 绘制返回按钮
void MatchPage::drawReturnButton(Lcd *lcd, int x, int y, int width, int height)
{
    int *buffer = lcd->getBuffer();
    BMP::drawRoundRectangle(
        buffer,
        x, y,
        x + width, y + height,
        0x8B4513, // 按钮背景色
        8,        // 圆角半径
        0x000000, // 边框色
        1         // 边框宽度
    );
    ShowFont::instance()->display(
        "返回",
        20, // 字体大小
        width, height,
        0x8B4513,
        0xFFFFFF,
        x + 10, y + 8); // 调整文字位置
}

// 检查返回按钮点击的实现
bool MatchPage::checkReturnButtonClick(Touch *touch, int x, int y, int width, int height)
{
    Point p;
    if (touch->checkTouch(p))
    {
        bool is_clicked = (p.x() >= x && p.x() <= x + width &&
                           p.y() >= y && p.y() <= y + height);
        if (is_clicked)
        {
            // 重置触摸状态，避免重复触发
            touch->reset();
        }
        return is_clicked;
    }
    return false;
}